home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / asmbler.arc / CHMOD.ASM < prev    next >
Assembly Source File  |  1988-11-19  |  2KB  |  70 lines

  1.  
  2. ASSUME  CS:CHMODC,DS:CHMODC
  3. CHMODC  SEGMENT PARA PUBLIC 'CODE'
  4.  
  5.         ORG     80H
  6. FOOSTR  EQU     THIS BYTE
  7.         ORG     100H
  8. CHMOD:  CLD
  9.         XOR     BP,BP
  10.         DEC     FOOSTR                  ; [0080H]
  11.         JL      BADPARAM
  12.         MOV     CL,FOOSTR               ; [0080H]
  13.         XOR     CH,CH
  14.         MOV     DI,OFFSET FOOSTR[2]     ; 0082H
  15.         MOV     AL,' '
  16.         REPNZ   SCASB
  17.         JNZ     BADPARAM
  18.         MOV     BYTE PTR [DI-01],00
  19.         MOV     BX,DI
  20.         MOV     FOOSTR,CL               ; [0080H]
  21. L0122:
  22.         CMP     FOOSTR,0                ; BYTE PTR [0080H]
  23.         JLE     DOCHMOD
  24.         MOV     AL,[BX]
  25.         MOV     CX,16
  26.         MOV     DI,OFFSET HEXSTR
  27.         REPNZ   SCASB
  28.         JNZ     BADHEX
  29.         SUB     DI,OFFSET HEXSTR + 1
  30.         MOV     CX,4
  31.         SHL     BP,CL
  32.         ADD     BP,DI
  33.         JMP     SHORT LOOP1
  34. BADHEX:
  35.         MOV     DX,OFFSET HEXERR
  36.         JMP     SHORT WRITESTR
  37. LOOP1:
  38.         INC     BX
  39.         DEC     FOOSTR                  ; BYTE PTR [0080H]
  40.         JMP     L0122
  41. DOCHMOD:
  42.         MOV     AX,4301H
  43.         MOV     CX,BP
  44.         MOV     DX,OFFSET FOOSTR+2      ; 0082H
  45.         INT     21H
  46.         JNB     EXIT
  47.         CMP     AX,2
  48.         JNZ     NOACCESS
  49.         MOV     DX,OFFSET FNDERR
  50.         JMP     SHORT WRITESTR
  51. NOACCESS:
  52.         MOV     DX,OFFSET ACCERR
  53.         JMP     SHORT WRITESTR
  54. BADPARAM:
  55.         MOV     DX,OFFSET PRMERR
  56. WRITESTR:
  57.         MOV     AH,09H
  58.         INT     21H
  59. EXIT:
  60.         INT     20H
  61.  
  62. HEXSTR  db      '0123456789ABCDEF'
  63. HEXERR  db      7,'Illegal HEX character',10,13,'$'
  64. PRMERR  db      7,'Too few parameters',10,13,'$'
  65. FNDERR  db      7,'File not found',10,13,'$'
  66. ACCERR  db      7,'Access denied - probably illegal attribute',10,13,'$'
  67.  
  68. CHMODC  ENDS
  69.         END     CHMOD
  70.